↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
perm_in_ga(nil, nil) → perm_out_ga(nil, nil)
perm_in_ga(XS, cons(Y, YS)) → U3_ga(XS, Y, YS, split_in_gag(XS, YS1, cons(Y, YS2)))
split_in_gag(XS, nil, XS) → split_out_gag(XS, nil, XS)
split_in_gag(cons(X, XS), cons(X, YS1), YS2) → U2_gag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
split_in_aag(XS, nil, XS) → split_out_aag(XS, nil, XS)
split_in_aag(cons(X, XS), cons(X, YS1), YS2) → U2_aag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
U2_aag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_aag(cons(X, XS), cons(X, YS1), YS2)
U2_gag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_gag(cons(X, XS), cons(X, YS1), YS2)
U3_ga(XS, Y, YS, split_out_gag(XS, YS1, cons(Y, YS2))) → U4_ga(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
append_in_gaa(nil, XS, XS) → append_out_gaa(nil, XS, XS)
append_in_gaa(cons(X, XS1), XS2, cons(X, YS)) → U1_gaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS1), XS2, cons(X, YS)) → U1_aaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
U1_aaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_aaa(cons(X, XS1), XS2, cons(X, YS))
U1_gaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_gaa(cons(X, XS1), XS2, cons(X, YS))
U4_ga(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_ga(XS, Y, YS, perm_in_aa(ZS, YS))
perm_in_aa(nil, nil) → perm_out_aa(nil, nil)
perm_in_aa(XS, cons(Y, YS)) → U3_aa(XS, Y, YS, split_in_aag(XS, YS1, cons(Y, YS2)))
U3_aa(XS, Y, YS, split_out_aag(XS, YS1, cons(Y, YS2))) → U4_aa(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
U4_aa(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_aa(XS, Y, YS, perm_in_aa(ZS, YS))
U5_aa(XS, Y, YS, perm_out_aa(ZS, YS)) → perm_out_aa(XS, cons(Y, YS))
U5_ga(XS, Y, YS, perm_out_aa(ZS, YS)) → perm_out_ga(XS, cons(Y, YS))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PrologToPiTRSProof
perm_in_ga(nil, nil) → perm_out_ga(nil, nil)
perm_in_ga(XS, cons(Y, YS)) → U3_ga(XS, Y, YS, split_in_gag(XS, YS1, cons(Y, YS2)))
split_in_gag(XS, nil, XS) → split_out_gag(XS, nil, XS)
split_in_gag(cons(X, XS), cons(X, YS1), YS2) → U2_gag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
split_in_aag(XS, nil, XS) → split_out_aag(XS, nil, XS)
split_in_aag(cons(X, XS), cons(X, YS1), YS2) → U2_aag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
U2_aag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_aag(cons(X, XS), cons(X, YS1), YS2)
U2_gag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_gag(cons(X, XS), cons(X, YS1), YS2)
U3_ga(XS, Y, YS, split_out_gag(XS, YS1, cons(Y, YS2))) → U4_ga(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
append_in_gaa(nil, XS, XS) → append_out_gaa(nil, XS, XS)
append_in_gaa(cons(X, XS1), XS2, cons(X, YS)) → U1_gaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS1), XS2, cons(X, YS)) → U1_aaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
U1_aaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_aaa(cons(X, XS1), XS2, cons(X, YS))
U1_gaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_gaa(cons(X, XS1), XS2, cons(X, YS))
U4_ga(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_ga(XS, Y, YS, perm_in_aa(ZS, YS))
perm_in_aa(nil, nil) → perm_out_aa(nil, nil)
perm_in_aa(XS, cons(Y, YS)) → U3_aa(XS, Y, YS, split_in_aag(XS, YS1, cons(Y, YS2)))
U3_aa(XS, Y, YS, split_out_aag(XS, YS1, cons(Y, YS2))) → U4_aa(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
U4_aa(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_aa(XS, Y, YS, perm_in_aa(ZS, YS))
U5_aa(XS, Y, YS, perm_out_aa(ZS, YS)) → perm_out_aa(XS, cons(Y, YS))
U5_ga(XS, Y, YS, perm_out_aa(ZS, YS)) → perm_out_ga(XS, cons(Y, YS))
PERM_IN_GA(XS, cons(Y, YS)) → U3_GA(XS, Y, YS, split_in_gag(XS, YS1, cons(Y, YS2)))
PERM_IN_GA(XS, cons(Y, YS)) → SPLIT_IN_GAG(XS, YS1, cons(Y, YS2))
SPLIT_IN_GAG(cons(X, XS), cons(X, YS1), YS2) → U2_GAG(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
SPLIT_IN_GAG(cons(X, XS), cons(X, YS1), YS2) → SPLIT_IN_AAG(XS, YS1, YS2)
SPLIT_IN_AAG(cons(X, XS), cons(X, YS1), YS2) → U2_AAG(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
SPLIT_IN_AAG(cons(X, XS), cons(X, YS1), YS2) → SPLIT_IN_AAG(XS, YS1, YS2)
U3_GA(XS, Y, YS, split_out_gag(XS, YS1, cons(Y, YS2))) → U4_GA(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
U3_GA(XS, Y, YS, split_out_gag(XS, YS1, cons(Y, YS2))) → APPEND_IN_GAA(YS1, YS2, ZS)
APPEND_IN_GAA(cons(X, XS1), XS2, cons(X, YS)) → U1_GAA(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
APPEND_IN_GAA(cons(X, XS1), XS2, cons(X, YS)) → APPEND_IN_AAA(XS1, XS2, YS)
APPEND_IN_AAA(cons(X, XS1), XS2, cons(X, YS)) → U1_AAA(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
APPEND_IN_AAA(cons(X, XS1), XS2, cons(X, YS)) → APPEND_IN_AAA(XS1, XS2, YS)
U4_GA(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_GA(XS, Y, YS, perm_in_aa(ZS, YS))
U4_GA(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → PERM_IN_AA(ZS, YS)
PERM_IN_AA(XS, cons(Y, YS)) → U3_AA(XS, Y, YS, split_in_aag(XS, YS1, cons(Y, YS2)))
PERM_IN_AA(XS, cons(Y, YS)) → SPLIT_IN_AAG(XS, YS1, cons(Y, YS2))
U3_AA(XS, Y, YS, split_out_aag(XS, YS1, cons(Y, YS2))) → U4_AA(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
U3_AA(XS, Y, YS, split_out_aag(XS, YS1, cons(Y, YS2))) → APPEND_IN_GAA(YS1, YS2, ZS)
U4_AA(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_AA(XS, Y, YS, perm_in_aa(ZS, YS))
U4_AA(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → PERM_IN_AA(ZS, YS)
perm_in_ga(nil, nil) → perm_out_ga(nil, nil)
perm_in_ga(XS, cons(Y, YS)) → U3_ga(XS, Y, YS, split_in_gag(XS, YS1, cons(Y, YS2)))
split_in_gag(XS, nil, XS) → split_out_gag(XS, nil, XS)
split_in_gag(cons(X, XS), cons(X, YS1), YS2) → U2_gag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
split_in_aag(XS, nil, XS) → split_out_aag(XS, nil, XS)
split_in_aag(cons(X, XS), cons(X, YS1), YS2) → U2_aag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
U2_aag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_aag(cons(X, XS), cons(X, YS1), YS2)
U2_gag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_gag(cons(X, XS), cons(X, YS1), YS2)
U3_ga(XS, Y, YS, split_out_gag(XS, YS1, cons(Y, YS2))) → U4_ga(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
append_in_gaa(nil, XS, XS) → append_out_gaa(nil, XS, XS)
append_in_gaa(cons(X, XS1), XS2, cons(X, YS)) → U1_gaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS1), XS2, cons(X, YS)) → U1_aaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
U1_aaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_aaa(cons(X, XS1), XS2, cons(X, YS))
U1_gaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_gaa(cons(X, XS1), XS2, cons(X, YS))
U4_ga(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_ga(XS, Y, YS, perm_in_aa(ZS, YS))
perm_in_aa(nil, nil) → perm_out_aa(nil, nil)
perm_in_aa(XS, cons(Y, YS)) → U3_aa(XS, Y, YS, split_in_aag(XS, YS1, cons(Y, YS2)))
U3_aa(XS, Y, YS, split_out_aag(XS, YS1, cons(Y, YS2))) → U4_aa(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
U4_aa(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_aa(XS, Y, YS, perm_in_aa(ZS, YS))
U5_aa(XS, Y, YS, perm_out_aa(ZS, YS)) → perm_out_aa(XS, cons(Y, YS))
U5_ga(XS, Y, YS, perm_out_aa(ZS, YS)) → perm_out_ga(XS, cons(Y, YS))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
PERM_IN_GA(XS, cons(Y, YS)) → U3_GA(XS, Y, YS, split_in_gag(XS, YS1, cons(Y, YS2)))
PERM_IN_GA(XS, cons(Y, YS)) → SPLIT_IN_GAG(XS, YS1, cons(Y, YS2))
SPLIT_IN_GAG(cons(X, XS), cons(X, YS1), YS2) → U2_GAG(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
SPLIT_IN_GAG(cons(X, XS), cons(X, YS1), YS2) → SPLIT_IN_AAG(XS, YS1, YS2)
SPLIT_IN_AAG(cons(X, XS), cons(X, YS1), YS2) → U2_AAG(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
SPLIT_IN_AAG(cons(X, XS), cons(X, YS1), YS2) → SPLIT_IN_AAG(XS, YS1, YS2)
U3_GA(XS, Y, YS, split_out_gag(XS, YS1, cons(Y, YS2))) → U4_GA(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
U3_GA(XS, Y, YS, split_out_gag(XS, YS1, cons(Y, YS2))) → APPEND_IN_GAA(YS1, YS2, ZS)
APPEND_IN_GAA(cons(X, XS1), XS2, cons(X, YS)) → U1_GAA(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
APPEND_IN_GAA(cons(X, XS1), XS2, cons(X, YS)) → APPEND_IN_AAA(XS1, XS2, YS)
APPEND_IN_AAA(cons(X, XS1), XS2, cons(X, YS)) → U1_AAA(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
APPEND_IN_AAA(cons(X, XS1), XS2, cons(X, YS)) → APPEND_IN_AAA(XS1, XS2, YS)
U4_GA(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_GA(XS, Y, YS, perm_in_aa(ZS, YS))
U4_GA(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → PERM_IN_AA(ZS, YS)
PERM_IN_AA(XS, cons(Y, YS)) → U3_AA(XS, Y, YS, split_in_aag(XS, YS1, cons(Y, YS2)))
PERM_IN_AA(XS, cons(Y, YS)) → SPLIT_IN_AAG(XS, YS1, cons(Y, YS2))
U3_AA(XS, Y, YS, split_out_aag(XS, YS1, cons(Y, YS2))) → U4_AA(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
U3_AA(XS, Y, YS, split_out_aag(XS, YS1, cons(Y, YS2))) → APPEND_IN_GAA(YS1, YS2, ZS)
U4_AA(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_AA(XS, Y, YS, perm_in_aa(ZS, YS))
U4_AA(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → PERM_IN_AA(ZS, YS)
perm_in_ga(nil, nil) → perm_out_ga(nil, nil)
perm_in_ga(XS, cons(Y, YS)) → U3_ga(XS, Y, YS, split_in_gag(XS, YS1, cons(Y, YS2)))
split_in_gag(XS, nil, XS) → split_out_gag(XS, nil, XS)
split_in_gag(cons(X, XS), cons(X, YS1), YS2) → U2_gag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
split_in_aag(XS, nil, XS) → split_out_aag(XS, nil, XS)
split_in_aag(cons(X, XS), cons(X, YS1), YS2) → U2_aag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
U2_aag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_aag(cons(X, XS), cons(X, YS1), YS2)
U2_gag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_gag(cons(X, XS), cons(X, YS1), YS2)
U3_ga(XS, Y, YS, split_out_gag(XS, YS1, cons(Y, YS2))) → U4_ga(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
append_in_gaa(nil, XS, XS) → append_out_gaa(nil, XS, XS)
append_in_gaa(cons(X, XS1), XS2, cons(X, YS)) → U1_gaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS1), XS2, cons(X, YS)) → U1_aaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
U1_aaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_aaa(cons(X, XS1), XS2, cons(X, YS))
U1_gaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_gaa(cons(X, XS1), XS2, cons(X, YS))
U4_ga(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_ga(XS, Y, YS, perm_in_aa(ZS, YS))
perm_in_aa(nil, nil) → perm_out_aa(nil, nil)
perm_in_aa(XS, cons(Y, YS)) → U3_aa(XS, Y, YS, split_in_aag(XS, YS1, cons(Y, YS2)))
U3_aa(XS, Y, YS, split_out_aag(XS, YS1, cons(Y, YS2))) → U4_aa(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
U4_aa(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_aa(XS, Y, YS, perm_in_aa(ZS, YS))
U5_aa(XS, Y, YS, perm_out_aa(ZS, YS)) → perm_out_aa(XS, cons(Y, YS))
U5_ga(XS, Y, YS, perm_out_aa(ZS, YS)) → perm_out_ga(XS, cons(Y, YS))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
APPEND_IN_AAA(cons(X, XS1), XS2, cons(X, YS)) → APPEND_IN_AAA(XS1, XS2, YS)
perm_in_ga(nil, nil) → perm_out_ga(nil, nil)
perm_in_ga(XS, cons(Y, YS)) → U3_ga(XS, Y, YS, split_in_gag(XS, YS1, cons(Y, YS2)))
split_in_gag(XS, nil, XS) → split_out_gag(XS, nil, XS)
split_in_gag(cons(X, XS), cons(X, YS1), YS2) → U2_gag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
split_in_aag(XS, nil, XS) → split_out_aag(XS, nil, XS)
split_in_aag(cons(X, XS), cons(X, YS1), YS2) → U2_aag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
U2_aag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_aag(cons(X, XS), cons(X, YS1), YS2)
U2_gag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_gag(cons(X, XS), cons(X, YS1), YS2)
U3_ga(XS, Y, YS, split_out_gag(XS, YS1, cons(Y, YS2))) → U4_ga(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
append_in_gaa(nil, XS, XS) → append_out_gaa(nil, XS, XS)
append_in_gaa(cons(X, XS1), XS2, cons(X, YS)) → U1_gaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS1), XS2, cons(X, YS)) → U1_aaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
U1_aaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_aaa(cons(X, XS1), XS2, cons(X, YS))
U1_gaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_gaa(cons(X, XS1), XS2, cons(X, YS))
U4_ga(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_ga(XS, Y, YS, perm_in_aa(ZS, YS))
perm_in_aa(nil, nil) → perm_out_aa(nil, nil)
perm_in_aa(XS, cons(Y, YS)) → U3_aa(XS, Y, YS, split_in_aag(XS, YS1, cons(Y, YS2)))
U3_aa(XS, Y, YS, split_out_aag(XS, YS1, cons(Y, YS2))) → U4_aa(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
U4_aa(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_aa(XS, Y, YS, perm_in_aa(ZS, YS))
U5_aa(XS, Y, YS, perm_out_aa(ZS, YS)) → perm_out_aa(XS, cons(Y, YS))
U5_ga(XS, Y, YS, perm_out_aa(ZS, YS)) → perm_out_ga(XS, cons(Y, YS))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
APPEND_IN_AAA(cons(X, XS1), XS2, cons(X, YS)) → APPEND_IN_AAA(XS1, XS2, YS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
APPEND_IN_AAA → APPEND_IN_AAA
APPEND_IN_AAA → APPEND_IN_AAA
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PrologToPiTRSProof
SPLIT_IN_AAG(cons(X, XS), cons(X, YS1), YS2) → SPLIT_IN_AAG(XS, YS1, YS2)
perm_in_ga(nil, nil) → perm_out_ga(nil, nil)
perm_in_ga(XS, cons(Y, YS)) → U3_ga(XS, Y, YS, split_in_gag(XS, YS1, cons(Y, YS2)))
split_in_gag(XS, nil, XS) → split_out_gag(XS, nil, XS)
split_in_gag(cons(X, XS), cons(X, YS1), YS2) → U2_gag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
split_in_aag(XS, nil, XS) → split_out_aag(XS, nil, XS)
split_in_aag(cons(X, XS), cons(X, YS1), YS2) → U2_aag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
U2_aag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_aag(cons(X, XS), cons(X, YS1), YS2)
U2_gag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_gag(cons(X, XS), cons(X, YS1), YS2)
U3_ga(XS, Y, YS, split_out_gag(XS, YS1, cons(Y, YS2))) → U4_ga(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
append_in_gaa(nil, XS, XS) → append_out_gaa(nil, XS, XS)
append_in_gaa(cons(X, XS1), XS2, cons(X, YS)) → U1_gaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS1), XS2, cons(X, YS)) → U1_aaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
U1_aaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_aaa(cons(X, XS1), XS2, cons(X, YS))
U1_gaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_gaa(cons(X, XS1), XS2, cons(X, YS))
U4_ga(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_ga(XS, Y, YS, perm_in_aa(ZS, YS))
perm_in_aa(nil, nil) → perm_out_aa(nil, nil)
perm_in_aa(XS, cons(Y, YS)) → U3_aa(XS, Y, YS, split_in_aag(XS, YS1, cons(Y, YS2)))
U3_aa(XS, Y, YS, split_out_aag(XS, YS1, cons(Y, YS2))) → U4_aa(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
U4_aa(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_aa(XS, Y, YS, perm_in_aa(ZS, YS))
U5_aa(XS, Y, YS, perm_out_aa(ZS, YS)) → perm_out_aa(XS, cons(Y, YS))
U5_ga(XS, Y, YS, perm_out_aa(ZS, YS)) → perm_out_ga(XS, cons(Y, YS))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PrologToPiTRSProof
SPLIT_IN_AAG(cons(X, XS), cons(X, YS1), YS2) → SPLIT_IN_AAG(XS, YS1, YS2)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PrologToPiTRSProof
SPLIT_IN_AAG(YS2) → SPLIT_IN_AAG(YS2)
SPLIT_IN_AAG(YS2) → SPLIT_IN_AAG(YS2)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PrologToPiTRSProof
U4_AA(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → PERM_IN_AA(ZS, YS)
U3_AA(XS, Y, YS, split_out_aag(XS, YS1, cons(Y, YS2))) → U4_AA(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
PERM_IN_AA(XS, cons(Y, YS)) → U3_AA(XS, Y, YS, split_in_aag(XS, YS1, cons(Y, YS2)))
perm_in_ga(nil, nil) → perm_out_ga(nil, nil)
perm_in_ga(XS, cons(Y, YS)) → U3_ga(XS, Y, YS, split_in_gag(XS, YS1, cons(Y, YS2)))
split_in_gag(XS, nil, XS) → split_out_gag(XS, nil, XS)
split_in_gag(cons(X, XS), cons(X, YS1), YS2) → U2_gag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
split_in_aag(XS, nil, XS) → split_out_aag(XS, nil, XS)
split_in_aag(cons(X, XS), cons(X, YS1), YS2) → U2_aag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
U2_aag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_aag(cons(X, XS), cons(X, YS1), YS2)
U2_gag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_gag(cons(X, XS), cons(X, YS1), YS2)
U3_ga(XS, Y, YS, split_out_gag(XS, YS1, cons(Y, YS2))) → U4_ga(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
append_in_gaa(nil, XS, XS) → append_out_gaa(nil, XS, XS)
append_in_gaa(cons(X, XS1), XS2, cons(X, YS)) → U1_gaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS1), XS2, cons(X, YS)) → U1_aaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
U1_aaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_aaa(cons(X, XS1), XS2, cons(X, YS))
U1_gaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_gaa(cons(X, XS1), XS2, cons(X, YS))
U4_ga(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_ga(XS, Y, YS, perm_in_aa(ZS, YS))
perm_in_aa(nil, nil) → perm_out_aa(nil, nil)
perm_in_aa(XS, cons(Y, YS)) → U3_aa(XS, Y, YS, split_in_aag(XS, YS1, cons(Y, YS2)))
U3_aa(XS, Y, YS, split_out_aag(XS, YS1, cons(Y, YS2))) → U4_aa(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
U4_aa(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_aa(XS, Y, YS, perm_in_aa(ZS, YS))
U5_aa(XS, Y, YS, perm_out_aa(ZS, YS)) → perm_out_aa(XS, cons(Y, YS))
U5_ga(XS, Y, YS, perm_out_aa(ZS, YS)) → perm_out_ga(XS, cons(Y, YS))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PrologToPiTRSProof
U4_AA(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → PERM_IN_AA(ZS, YS)
U3_AA(XS, Y, YS, split_out_aag(XS, YS1, cons(Y, YS2))) → U4_AA(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
PERM_IN_AA(XS, cons(Y, YS)) → U3_AA(XS, Y, YS, split_in_aag(XS, YS1, cons(Y, YS2)))
append_in_gaa(nil, XS, XS) → append_out_gaa(nil, XS, XS)
append_in_gaa(cons(X, XS1), XS2, cons(X, YS)) → U1_gaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
split_in_aag(XS, nil, XS) → split_out_aag(XS, nil, XS)
split_in_aag(cons(X, XS), cons(X, YS1), YS2) → U2_aag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
U1_gaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_gaa(cons(X, XS1), XS2, cons(X, YS))
U2_aag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_aag(cons(X, XS), cons(X, YS1), YS2)
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS1), XS2, cons(X, YS)) → U1_aaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
U1_aaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_aaa(cons(X, XS1), XS2, cons(X, YS))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ PrologToPiTRSProof
U3_AA(split_out_aag(XS, YS1)) → U4_AA(XS, append_in_gaa(YS1))
PERM_IN_AA → U3_AA(split_in_aag(cons))
U4_AA(XS, append_out_gaa) → PERM_IN_AA
append_in_gaa(nil) → append_out_gaa
append_in_gaa(cons) → U1_gaa(append_in_aaa)
split_in_aag(XS) → split_out_aag(XS, nil)
split_in_aag(YS2) → U2_aag(split_in_aag(YS2))
U1_gaa(append_out_aaa(XS1)) → append_out_gaa
U2_aag(split_out_aag(XS, YS1)) → split_out_aag(cons, cons)
append_in_aaa → append_out_aaa(nil)
append_in_aaa → U1_aaa(append_in_aaa)
U1_aaa(append_out_aaa(XS1)) → append_out_aaa(cons)
append_in_gaa(x0)
split_in_aag(x0)
U1_gaa(x0)
U2_aag(x0)
append_in_aaa
U1_aaa(x0)
U3_AA(split_out_aag(y0, cons)) → U4_AA(y0, U1_gaa(append_in_aaa))
U3_AA(split_out_aag(y0, nil)) → U4_AA(y0, append_out_gaa)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ PrologToPiTRSProof
U3_AA(split_out_aag(y0, cons)) → U4_AA(y0, U1_gaa(append_in_aaa))
U3_AA(split_out_aag(y0, nil)) → U4_AA(y0, append_out_gaa)
PERM_IN_AA → U3_AA(split_in_aag(cons))
U4_AA(XS, append_out_gaa) → PERM_IN_AA
append_in_gaa(nil) → append_out_gaa
append_in_gaa(cons) → U1_gaa(append_in_aaa)
split_in_aag(XS) → split_out_aag(XS, nil)
split_in_aag(YS2) → U2_aag(split_in_aag(YS2))
U1_gaa(append_out_aaa(XS1)) → append_out_gaa
U2_aag(split_out_aag(XS, YS1)) → split_out_aag(cons, cons)
append_in_aaa → append_out_aaa(nil)
append_in_aaa → U1_aaa(append_in_aaa)
U1_aaa(append_out_aaa(XS1)) → append_out_aaa(cons)
append_in_gaa(x0)
split_in_aag(x0)
U1_gaa(x0)
U2_aag(x0)
append_in_aaa
U1_aaa(x0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ PrologToPiTRSProof
U3_AA(split_out_aag(y0, cons)) → U4_AA(y0, U1_gaa(append_in_aaa))
U3_AA(split_out_aag(y0, nil)) → U4_AA(y0, append_out_gaa)
PERM_IN_AA → U3_AA(split_in_aag(cons))
U4_AA(XS, append_out_gaa) → PERM_IN_AA
split_in_aag(XS) → split_out_aag(XS, nil)
split_in_aag(YS2) → U2_aag(split_in_aag(YS2))
U2_aag(split_out_aag(XS, YS1)) → split_out_aag(cons, cons)
append_in_aaa → append_out_aaa(nil)
append_in_aaa → U1_aaa(append_in_aaa)
U1_gaa(append_out_aaa(XS1)) → append_out_gaa
U1_aaa(append_out_aaa(XS1)) → append_out_aaa(cons)
append_in_gaa(x0)
split_in_aag(x0)
U1_gaa(x0)
U2_aag(x0)
append_in_aaa
U1_aaa(x0)
append_in_gaa(x0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ PrologToPiTRSProof
U3_AA(split_out_aag(y0, cons)) → U4_AA(y0, U1_gaa(append_in_aaa))
U3_AA(split_out_aag(y0, nil)) → U4_AA(y0, append_out_gaa)
PERM_IN_AA → U3_AA(split_in_aag(cons))
U4_AA(XS, append_out_gaa) → PERM_IN_AA
split_in_aag(XS) → split_out_aag(XS, nil)
split_in_aag(YS2) → U2_aag(split_in_aag(YS2))
U2_aag(split_out_aag(XS, YS1)) → split_out_aag(cons, cons)
append_in_aaa → append_out_aaa(nil)
append_in_aaa → U1_aaa(append_in_aaa)
U1_gaa(append_out_aaa(XS1)) → append_out_gaa
U1_aaa(append_out_aaa(XS1)) → append_out_aaa(cons)
split_in_aag(x0)
U1_gaa(x0)
U2_aag(x0)
append_in_aaa
U1_aaa(x0)
PERM_IN_AA → U3_AA(split_out_aag(cons, nil))
PERM_IN_AA → U3_AA(U2_aag(split_in_aag(cons)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ NonTerminationProof
↳ PrologToPiTRSProof
U3_AA(split_out_aag(y0, cons)) → U4_AA(y0, U1_gaa(append_in_aaa))
U3_AA(split_out_aag(y0, nil)) → U4_AA(y0, append_out_gaa)
PERM_IN_AA → U3_AA(split_out_aag(cons, nil))
PERM_IN_AA → U3_AA(U2_aag(split_in_aag(cons)))
U4_AA(XS, append_out_gaa) → PERM_IN_AA
split_in_aag(XS) → split_out_aag(XS, nil)
split_in_aag(YS2) → U2_aag(split_in_aag(YS2))
U2_aag(split_out_aag(XS, YS1)) → split_out_aag(cons, cons)
append_in_aaa → append_out_aaa(nil)
append_in_aaa → U1_aaa(append_in_aaa)
U1_gaa(append_out_aaa(XS1)) → append_out_gaa
U1_aaa(append_out_aaa(XS1)) → append_out_aaa(cons)
split_in_aag(x0)
U1_gaa(x0)
U2_aag(x0)
append_in_aaa
U1_aaa(x0)
U3_AA(split_out_aag(y0, cons)) → U4_AA(y0, U1_gaa(append_in_aaa))
U3_AA(split_out_aag(y0, nil)) → U4_AA(y0, append_out_gaa)
PERM_IN_AA → U3_AA(split_out_aag(cons, nil))
PERM_IN_AA → U3_AA(U2_aag(split_in_aag(cons)))
U4_AA(XS, append_out_gaa) → PERM_IN_AA
split_in_aag(XS) → split_out_aag(XS, nil)
split_in_aag(YS2) → U2_aag(split_in_aag(YS2))
U2_aag(split_out_aag(XS, YS1)) → split_out_aag(cons, cons)
append_in_aaa → append_out_aaa(nil)
append_in_aaa → U1_aaa(append_in_aaa)
U1_gaa(append_out_aaa(XS1)) → append_out_gaa
U1_aaa(append_out_aaa(XS1)) → append_out_aaa(cons)
perm_in_ga(nil, nil) → perm_out_ga(nil, nil)
perm_in_ga(XS, cons(Y, YS)) → U3_ga(XS, Y, YS, split_in_gag(XS, YS1, cons(Y, YS2)))
split_in_gag(XS, nil, XS) → split_out_gag(XS, nil, XS)
split_in_gag(cons(X, XS), cons(X, YS1), YS2) → U2_gag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
split_in_aag(XS, nil, XS) → split_out_aag(XS, nil, XS)
split_in_aag(cons(X, XS), cons(X, YS1), YS2) → U2_aag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
U2_aag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_aag(cons(X, XS), cons(X, YS1), YS2)
U2_gag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_gag(cons(X, XS), cons(X, YS1), YS2)
U3_ga(XS, Y, YS, split_out_gag(XS, YS1, cons(Y, YS2))) → U4_ga(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
append_in_gaa(nil, XS, XS) → append_out_gaa(nil, XS, XS)
append_in_gaa(cons(X, XS1), XS2, cons(X, YS)) → U1_gaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS1), XS2, cons(X, YS)) → U1_aaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
U1_aaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_aaa(cons(X, XS1), XS2, cons(X, YS))
U1_gaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_gaa(cons(X, XS1), XS2, cons(X, YS))
U4_ga(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_ga(XS, Y, YS, perm_in_aa(ZS, YS))
perm_in_aa(nil, nil) → perm_out_aa(nil, nil)
perm_in_aa(XS, cons(Y, YS)) → U3_aa(XS, Y, YS, split_in_aag(XS, YS1, cons(Y, YS2)))
U3_aa(XS, Y, YS, split_out_aag(XS, YS1, cons(Y, YS2))) → U4_aa(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
U4_aa(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_aa(XS, Y, YS, perm_in_aa(ZS, YS))
U5_aa(XS, Y, YS, perm_out_aa(ZS, YS)) → perm_out_aa(XS, cons(Y, YS))
U5_ga(XS, Y, YS, perm_out_aa(ZS, YS)) → perm_out_ga(XS, cons(Y, YS))
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
perm_in_ga(nil, nil) → perm_out_ga(nil, nil)
perm_in_ga(XS, cons(Y, YS)) → U3_ga(XS, Y, YS, split_in_gag(XS, YS1, cons(Y, YS2)))
split_in_gag(XS, nil, XS) → split_out_gag(XS, nil, XS)
split_in_gag(cons(X, XS), cons(X, YS1), YS2) → U2_gag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
split_in_aag(XS, nil, XS) → split_out_aag(XS, nil, XS)
split_in_aag(cons(X, XS), cons(X, YS1), YS2) → U2_aag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
U2_aag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_aag(cons(X, XS), cons(X, YS1), YS2)
U2_gag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_gag(cons(X, XS), cons(X, YS1), YS2)
U3_ga(XS, Y, YS, split_out_gag(XS, YS1, cons(Y, YS2))) → U4_ga(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
append_in_gaa(nil, XS, XS) → append_out_gaa(nil, XS, XS)
append_in_gaa(cons(X, XS1), XS2, cons(X, YS)) → U1_gaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS1), XS2, cons(X, YS)) → U1_aaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
U1_aaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_aaa(cons(X, XS1), XS2, cons(X, YS))
U1_gaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_gaa(cons(X, XS1), XS2, cons(X, YS))
U4_ga(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_ga(XS, Y, YS, perm_in_aa(ZS, YS))
perm_in_aa(nil, nil) → perm_out_aa(nil, nil)
perm_in_aa(XS, cons(Y, YS)) → U3_aa(XS, Y, YS, split_in_aag(XS, YS1, cons(Y, YS2)))
U3_aa(XS, Y, YS, split_out_aag(XS, YS1, cons(Y, YS2))) → U4_aa(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
U4_aa(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_aa(XS, Y, YS, perm_in_aa(ZS, YS))
U5_aa(XS, Y, YS, perm_out_aa(ZS, YS)) → perm_out_aa(XS, cons(Y, YS))
U5_ga(XS, Y, YS, perm_out_aa(ZS, YS)) → perm_out_ga(XS, cons(Y, YS))
PERM_IN_GA(XS, cons(Y, YS)) → U3_GA(XS, Y, YS, split_in_gag(XS, YS1, cons(Y, YS2)))
PERM_IN_GA(XS, cons(Y, YS)) → SPLIT_IN_GAG(XS, YS1, cons(Y, YS2))
SPLIT_IN_GAG(cons(X, XS), cons(X, YS1), YS2) → U2_GAG(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
SPLIT_IN_GAG(cons(X, XS), cons(X, YS1), YS2) → SPLIT_IN_AAG(XS, YS1, YS2)
SPLIT_IN_AAG(cons(X, XS), cons(X, YS1), YS2) → U2_AAG(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
SPLIT_IN_AAG(cons(X, XS), cons(X, YS1), YS2) → SPLIT_IN_AAG(XS, YS1, YS2)
U3_GA(XS, Y, YS, split_out_gag(XS, YS1, cons(Y, YS2))) → U4_GA(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
U3_GA(XS, Y, YS, split_out_gag(XS, YS1, cons(Y, YS2))) → APPEND_IN_GAA(YS1, YS2, ZS)
APPEND_IN_GAA(cons(X, XS1), XS2, cons(X, YS)) → U1_GAA(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
APPEND_IN_GAA(cons(X, XS1), XS2, cons(X, YS)) → APPEND_IN_AAA(XS1, XS2, YS)
APPEND_IN_AAA(cons(X, XS1), XS2, cons(X, YS)) → U1_AAA(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
APPEND_IN_AAA(cons(X, XS1), XS2, cons(X, YS)) → APPEND_IN_AAA(XS1, XS2, YS)
U4_GA(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_GA(XS, Y, YS, perm_in_aa(ZS, YS))
U4_GA(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → PERM_IN_AA(ZS, YS)
PERM_IN_AA(XS, cons(Y, YS)) → U3_AA(XS, Y, YS, split_in_aag(XS, YS1, cons(Y, YS2)))
PERM_IN_AA(XS, cons(Y, YS)) → SPLIT_IN_AAG(XS, YS1, cons(Y, YS2))
U3_AA(XS, Y, YS, split_out_aag(XS, YS1, cons(Y, YS2))) → U4_AA(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
U3_AA(XS, Y, YS, split_out_aag(XS, YS1, cons(Y, YS2))) → APPEND_IN_GAA(YS1, YS2, ZS)
U4_AA(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_AA(XS, Y, YS, perm_in_aa(ZS, YS))
U4_AA(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → PERM_IN_AA(ZS, YS)
perm_in_ga(nil, nil) → perm_out_ga(nil, nil)
perm_in_ga(XS, cons(Y, YS)) → U3_ga(XS, Y, YS, split_in_gag(XS, YS1, cons(Y, YS2)))
split_in_gag(XS, nil, XS) → split_out_gag(XS, nil, XS)
split_in_gag(cons(X, XS), cons(X, YS1), YS2) → U2_gag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
split_in_aag(XS, nil, XS) → split_out_aag(XS, nil, XS)
split_in_aag(cons(X, XS), cons(X, YS1), YS2) → U2_aag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
U2_aag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_aag(cons(X, XS), cons(X, YS1), YS2)
U2_gag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_gag(cons(X, XS), cons(X, YS1), YS2)
U3_ga(XS, Y, YS, split_out_gag(XS, YS1, cons(Y, YS2))) → U4_ga(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
append_in_gaa(nil, XS, XS) → append_out_gaa(nil, XS, XS)
append_in_gaa(cons(X, XS1), XS2, cons(X, YS)) → U1_gaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS1), XS2, cons(X, YS)) → U1_aaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
U1_aaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_aaa(cons(X, XS1), XS2, cons(X, YS))
U1_gaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_gaa(cons(X, XS1), XS2, cons(X, YS))
U4_ga(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_ga(XS, Y, YS, perm_in_aa(ZS, YS))
perm_in_aa(nil, nil) → perm_out_aa(nil, nil)
perm_in_aa(XS, cons(Y, YS)) → U3_aa(XS, Y, YS, split_in_aag(XS, YS1, cons(Y, YS2)))
U3_aa(XS, Y, YS, split_out_aag(XS, YS1, cons(Y, YS2))) → U4_aa(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
U4_aa(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_aa(XS, Y, YS, perm_in_aa(ZS, YS))
U5_aa(XS, Y, YS, perm_out_aa(ZS, YS)) → perm_out_aa(XS, cons(Y, YS))
U5_ga(XS, Y, YS, perm_out_aa(ZS, YS)) → perm_out_ga(XS, cons(Y, YS))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
PERM_IN_GA(XS, cons(Y, YS)) → U3_GA(XS, Y, YS, split_in_gag(XS, YS1, cons(Y, YS2)))
PERM_IN_GA(XS, cons(Y, YS)) → SPLIT_IN_GAG(XS, YS1, cons(Y, YS2))
SPLIT_IN_GAG(cons(X, XS), cons(X, YS1), YS2) → U2_GAG(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
SPLIT_IN_GAG(cons(X, XS), cons(X, YS1), YS2) → SPLIT_IN_AAG(XS, YS1, YS2)
SPLIT_IN_AAG(cons(X, XS), cons(X, YS1), YS2) → U2_AAG(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
SPLIT_IN_AAG(cons(X, XS), cons(X, YS1), YS2) → SPLIT_IN_AAG(XS, YS1, YS2)
U3_GA(XS, Y, YS, split_out_gag(XS, YS1, cons(Y, YS2))) → U4_GA(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
U3_GA(XS, Y, YS, split_out_gag(XS, YS1, cons(Y, YS2))) → APPEND_IN_GAA(YS1, YS2, ZS)
APPEND_IN_GAA(cons(X, XS1), XS2, cons(X, YS)) → U1_GAA(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
APPEND_IN_GAA(cons(X, XS1), XS2, cons(X, YS)) → APPEND_IN_AAA(XS1, XS2, YS)
APPEND_IN_AAA(cons(X, XS1), XS2, cons(X, YS)) → U1_AAA(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
APPEND_IN_AAA(cons(X, XS1), XS2, cons(X, YS)) → APPEND_IN_AAA(XS1, XS2, YS)
U4_GA(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_GA(XS, Y, YS, perm_in_aa(ZS, YS))
U4_GA(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → PERM_IN_AA(ZS, YS)
PERM_IN_AA(XS, cons(Y, YS)) → U3_AA(XS, Y, YS, split_in_aag(XS, YS1, cons(Y, YS2)))
PERM_IN_AA(XS, cons(Y, YS)) → SPLIT_IN_AAG(XS, YS1, cons(Y, YS2))
U3_AA(XS, Y, YS, split_out_aag(XS, YS1, cons(Y, YS2))) → U4_AA(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
U3_AA(XS, Y, YS, split_out_aag(XS, YS1, cons(Y, YS2))) → APPEND_IN_GAA(YS1, YS2, ZS)
U4_AA(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_AA(XS, Y, YS, perm_in_aa(ZS, YS))
U4_AA(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → PERM_IN_AA(ZS, YS)
perm_in_ga(nil, nil) → perm_out_ga(nil, nil)
perm_in_ga(XS, cons(Y, YS)) → U3_ga(XS, Y, YS, split_in_gag(XS, YS1, cons(Y, YS2)))
split_in_gag(XS, nil, XS) → split_out_gag(XS, nil, XS)
split_in_gag(cons(X, XS), cons(X, YS1), YS2) → U2_gag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
split_in_aag(XS, nil, XS) → split_out_aag(XS, nil, XS)
split_in_aag(cons(X, XS), cons(X, YS1), YS2) → U2_aag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
U2_aag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_aag(cons(X, XS), cons(X, YS1), YS2)
U2_gag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_gag(cons(X, XS), cons(X, YS1), YS2)
U3_ga(XS, Y, YS, split_out_gag(XS, YS1, cons(Y, YS2))) → U4_ga(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
append_in_gaa(nil, XS, XS) → append_out_gaa(nil, XS, XS)
append_in_gaa(cons(X, XS1), XS2, cons(X, YS)) → U1_gaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS1), XS2, cons(X, YS)) → U1_aaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
U1_aaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_aaa(cons(X, XS1), XS2, cons(X, YS))
U1_gaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_gaa(cons(X, XS1), XS2, cons(X, YS))
U4_ga(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_ga(XS, Y, YS, perm_in_aa(ZS, YS))
perm_in_aa(nil, nil) → perm_out_aa(nil, nil)
perm_in_aa(XS, cons(Y, YS)) → U3_aa(XS, Y, YS, split_in_aag(XS, YS1, cons(Y, YS2)))
U3_aa(XS, Y, YS, split_out_aag(XS, YS1, cons(Y, YS2))) → U4_aa(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
U4_aa(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_aa(XS, Y, YS, perm_in_aa(ZS, YS))
U5_aa(XS, Y, YS, perm_out_aa(ZS, YS)) → perm_out_aa(XS, cons(Y, YS))
U5_ga(XS, Y, YS, perm_out_aa(ZS, YS)) → perm_out_ga(XS, cons(Y, YS))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
APPEND_IN_AAA(cons(X, XS1), XS2, cons(X, YS)) → APPEND_IN_AAA(XS1, XS2, YS)
perm_in_ga(nil, nil) → perm_out_ga(nil, nil)
perm_in_ga(XS, cons(Y, YS)) → U3_ga(XS, Y, YS, split_in_gag(XS, YS1, cons(Y, YS2)))
split_in_gag(XS, nil, XS) → split_out_gag(XS, nil, XS)
split_in_gag(cons(X, XS), cons(X, YS1), YS2) → U2_gag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
split_in_aag(XS, nil, XS) → split_out_aag(XS, nil, XS)
split_in_aag(cons(X, XS), cons(X, YS1), YS2) → U2_aag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
U2_aag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_aag(cons(X, XS), cons(X, YS1), YS2)
U2_gag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_gag(cons(X, XS), cons(X, YS1), YS2)
U3_ga(XS, Y, YS, split_out_gag(XS, YS1, cons(Y, YS2))) → U4_ga(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
append_in_gaa(nil, XS, XS) → append_out_gaa(nil, XS, XS)
append_in_gaa(cons(X, XS1), XS2, cons(X, YS)) → U1_gaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS1), XS2, cons(X, YS)) → U1_aaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
U1_aaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_aaa(cons(X, XS1), XS2, cons(X, YS))
U1_gaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_gaa(cons(X, XS1), XS2, cons(X, YS))
U4_ga(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_ga(XS, Y, YS, perm_in_aa(ZS, YS))
perm_in_aa(nil, nil) → perm_out_aa(nil, nil)
perm_in_aa(XS, cons(Y, YS)) → U3_aa(XS, Y, YS, split_in_aag(XS, YS1, cons(Y, YS2)))
U3_aa(XS, Y, YS, split_out_aag(XS, YS1, cons(Y, YS2))) → U4_aa(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
U4_aa(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_aa(XS, Y, YS, perm_in_aa(ZS, YS))
U5_aa(XS, Y, YS, perm_out_aa(ZS, YS)) → perm_out_aa(XS, cons(Y, YS))
U5_ga(XS, Y, YS, perm_out_aa(ZS, YS)) → perm_out_ga(XS, cons(Y, YS))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
APPEND_IN_AAA(cons(X, XS1), XS2, cons(X, YS)) → APPEND_IN_AAA(XS1, XS2, YS)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PiDP
APPEND_IN_AAA → APPEND_IN_AAA
APPEND_IN_AAA → APPEND_IN_AAA
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
SPLIT_IN_AAG(cons(X, XS), cons(X, YS1), YS2) → SPLIT_IN_AAG(XS, YS1, YS2)
perm_in_ga(nil, nil) → perm_out_ga(nil, nil)
perm_in_ga(XS, cons(Y, YS)) → U3_ga(XS, Y, YS, split_in_gag(XS, YS1, cons(Y, YS2)))
split_in_gag(XS, nil, XS) → split_out_gag(XS, nil, XS)
split_in_gag(cons(X, XS), cons(X, YS1), YS2) → U2_gag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
split_in_aag(XS, nil, XS) → split_out_aag(XS, nil, XS)
split_in_aag(cons(X, XS), cons(X, YS1), YS2) → U2_aag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
U2_aag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_aag(cons(X, XS), cons(X, YS1), YS2)
U2_gag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_gag(cons(X, XS), cons(X, YS1), YS2)
U3_ga(XS, Y, YS, split_out_gag(XS, YS1, cons(Y, YS2))) → U4_ga(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
append_in_gaa(nil, XS, XS) → append_out_gaa(nil, XS, XS)
append_in_gaa(cons(X, XS1), XS2, cons(X, YS)) → U1_gaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS1), XS2, cons(X, YS)) → U1_aaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
U1_aaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_aaa(cons(X, XS1), XS2, cons(X, YS))
U1_gaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_gaa(cons(X, XS1), XS2, cons(X, YS))
U4_ga(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_ga(XS, Y, YS, perm_in_aa(ZS, YS))
perm_in_aa(nil, nil) → perm_out_aa(nil, nil)
perm_in_aa(XS, cons(Y, YS)) → U3_aa(XS, Y, YS, split_in_aag(XS, YS1, cons(Y, YS2)))
U3_aa(XS, Y, YS, split_out_aag(XS, YS1, cons(Y, YS2))) → U4_aa(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
U4_aa(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_aa(XS, Y, YS, perm_in_aa(ZS, YS))
U5_aa(XS, Y, YS, perm_out_aa(ZS, YS)) → perm_out_aa(XS, cons(Y, YS))
U5_ga(XS, Y, YS, perm_out_aa(ZS, YS)) → perm_out_ga(XS, cons(Y, YS))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
SPLIT_IN_AAG(cons(X, XS), cons(X, YS1), YS2) → SPLIT_IN_AAG(XS, YS1, YS2)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
SPLIT_IN_AAG(YS2) → SPLIT_IN_AAG(YS2)
SPLIT_IN_AAG(YS2) → SPLIT_IN_AAG(YS2)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
U4_AA(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → PERM_IN_AA(ZS, YS)
U3_AA(XS, Y, YS, split_out_aag(XS, YS1, cons(Y, YS2))) → U4_AA(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
PERM_IN_AA(XS, cons(Y, YS)) → U3_AA(XS, Y, YS, split_in_aag(XS, YS1, cons(Y, YS2)))
perm_in_ga(nil, nil) → perm_out_ga(nil, nil)
perm_in_ga(XS, cons(Y, YS)) → U3_ga(XS, Y, YS, split_in_gag(XS, YS1, cons(Y, YS2)))
split_in_gag(XS, nil, XS) → split_out_gag(XS, nil, XS)
split_in_gag(cons(X, XS), cons(X, YS1), YS2) → U2_gag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
split_in_aag(XS, nil, XS) → split_out_aag(XS, nil, XS)
split_in_aag(cons(X, XS), cons(X, YS1), YS2) → U2_aag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
U2_aag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_aag(cons(X, XS), cons(X, YS1), YS2)
U2_gag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_gag(cons(X, XS), cons(X, YS1), YS2)
U3_ga(XS, Y, YS, split_out_gag(XS, YS1, cons(Y, YS2))) → U4_ga(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
append_in_gaa(nil, XS, XS) → append_out_gaa(nil, XS, XS)
append_in_gaa(cons(X, XS1), XS2, cons(X, YS)) → U1_gaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS1), XS2, cons(X, YS)) → U1_aaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
U1_aaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_aaa(cons(X, XS1), XS2, cons(X, YS))
U1_gaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_gaa(cons(X, XS1), XS2, cons(X, YS))
U4_ga(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_ga(XS, Y, YS, perm_in_aa(ZS, YS))
perm_in_aa(nil, nil) → perm_out_aa(nil, nil)
perm_in_aa(XS, cons(Y, YS)) → U3_aa(XS, Y, YS, split_in_aag(XS, YS1, cons(Y, YS2)))
U3_aa(XS, Y, YS, split_out_aag(XS, YS1, cons(Y, YS2))) → U4_aa(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
U4_aa(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → U5_aa(XS, Y, YS, perm_in_aa(ZS, YS))
U5_aa(XS, Y, YS, perm_out_aa(ZS, YS)) → perm_out_aa(XS, cons(Y, YS))
U5_ga(XS, Y, YS, perm_out_aa(ZS, YS)) → perm_out_ga(XS, cons(Y, YS))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
U4_AA(XS, Y, YS, YS1, YS2, append_out_gaa(YS1, YS2, ZS)) → PERM_IN_AA(ZS, YS)
U3_AA(XS, Y, YS, split_out_aag(XS, YS1, cons(Y, YS2))) → U4_AA(XS, Y, YS, YS1, YS2, append_in_gaa(YS1, YS2, ZS))
PERM_IN_AA(XS, cons(Y, YS)) → U3_AA(XS, Y, YS, split_in_aag(XS, YS1, cons(Y, YS2)))
append_in_gaa(nil, XS, XS) → append_out_gaa(nil, XS, XS)
append_in_gaa(cons(X, XS1), XS2, cons(X, YS)) → U1_gaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
split_in_aag(XS, nil, XS) → split_out_aag(XS, nil, XS)
split_in_aag(cons(X, XS), cons(X, YS1), YS2) → U2_aag(X, XS, YS1, YS2, split_in_aag(XS, YS1, YS2))
U1_gaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_gaa(cons(X, XS1), XS2, cons(X, YS))
U2_aag(X, XS, YS1, YS2, split_out_aag(XS, YS1, YS2)) → split_out_aag(cons(X, XS), cons(X, YS1), YS2)
append_in_aaa(nil, XS, XS) → append_out_aaa(nil, XS, XS)
append_in_aaa(cons(X, XS1), XS2, cons(X, YS)) → U1_aaa(X, XS1, XS2, YS, append_in_aaa(XS1, XS2, YS))
U1_aaa(X, XS1, XS2, YS, append_out_aaa(XS1, XS2, YS)) → append_out_aaa(cons(X, XS1), XS2, cons(X, YS))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
U4_AA(XS, append_out_gaa(YS1)) → PERM_IN_AA
PERM_IN_AA → U3_AA(split_in_aag(cons))
U3_AA(split_out_aag(XS, YS1, cons)) → U4_AA(XS, append_in_gaa(YS1))
append_in_gaa(nil) → append_out_gaa(nil)
append_in_gaa(cons) → U1_gaa(append_in_aaa)
split_in_aag(XS) → split_out_aag(XS, nil, XS)
split_in_aag(YS2) → U2_aag(YS2, split_in_aag(YS2))
U1_gaa(append_out_aaa(XS1)) → append_out_gaa(cons)
U2_aag(YS2, split_out_aag(XS, YS1, YS2)) → split_out_aag(cons, cons, YS2)
append_in_aaa → append_out_aaa(nil)
append_in_aaa → U1_aaa(append_in_aaa)
U1_aaa(append_out_aaa(XS1)) → append_out_aaa(cons)
append_in_gaa(x0)
split_in_aag(x0)
U1_gaa(x0)
U2_aag(x0, x1)
append_in_aaa
U1_aaa(x0)
U3_AA(split_out_aag(y0, nil, cons)) → U4_AA(y0, append_out_gaa(nil))
U3_AA(split_out_aag(y0, cons, cons)) → U4_AA(y0, U1_gaa(append_in_aaa))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
U4_AA(XS, append_out_gaa(YS1)) → PERM_IN_AA
U3_AA(split_out_aag(y0, nil, cons)) → U4_AA(y0, append_out_gaa(nil))
PERM_IN_AA → U3_AA(split_in_aag(cons))
U3_AA(split_out_aag(y0, cons, cons)) → U4_AA(y0, U1_gaa(append_in_aaa))
append_in_gaa(nil) → append_out_gaa(nil)
append_in_gaa(cons) → U1_gaa(append_in_aaa)
split_in_aag(XS) → split_out_aag(XS, nil, XS)
split_in_aag(YS2) → U2_aag(YS2, split_in_aag(YS2))
U1_gaa(append_out_aaa(XS1)) → append_out_gaa(cons)
U2_aag(YS2, split_out_aag(XS, YS1, YS2)) → split_out_aag(cons, cons, YS2)
append_in_aaa → append_out_aaa(nil)
append_in_aaa → U1_aaa(append_in_aaa)
U1_aaa(append_out_aaa(XS1)) → append_out_aaa(cons)
append_in_gaa(x0)
split_in_aag(x0)
U1_gaa(x0)
U2_aag(x0, x1)
append_in_aaa
U1_aaa(x0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
U4_AA(XS, append_out_gaa(YS1)) → PERM_IN_AA
U3_AA(split_out_aag(y0, nil, cons)) → U4_AA(y0, append_out_gaa(nil))
PERM_IN_AA → U3_AA(split_in_aag(cons))
U3_AA(split_out_aag(y0, cons, cons)) → U4_AA(y0, U1_gaa(append_in_aaa))
split_in_aag(XS) → split_out_aag(XS, nil, XS)
split_in_aag(YS2) → U2_aag(YS2, split_in_aag(YS2))
U2_aag(YS2, split_out_aag(XS, YS1, YS2)) → split_out_aag(cons, cons, YS2)
append_in_aaa → append_out_aaa(nil)
append_in_aaa → U1_aaa(append_in_aaa)
U1_gaa(append_out_aaa(XS1)) → append_out_gaa(cons)
U1_aaa(append_out_aaa(XS1)) → append_out_aaa(cons)
append_in_gaa(x0)
split_in_aag(x0)
U1_gaa(x0)
U2_aag(x0, x1)
append_in_aaa
U1_aaa(x0)
append_in_gaa(x0)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
U4_AA(XS, append_out_gaa(YS1)) → PERM_IN_AA
PERM_IN_AA → U3_AA(split_in_aag(cons))
U3_AA(split_out_aag(y0, nil, cons)) → U4_AA(y0, append_out_gaa(nil))
U3_AA(split_out_aag(y0, cons, cons)) → U4_AA(y0, U1_gaa(append_in_aaa))
split_in_aag(XS) → split_out_aag(XS, nil, XS)
split_in_aag(YS2) → U2_aag(YS2, split_in_aag(YS2))
U2_aag(YS2, split_out_aag(XS, YS1, YS2)) → split_out_aag(cons, cons, YS2)
append_in_aaa → append_out_aaa(nil)
append_in_aaa → U1_aaa(append_in_aaa)
U1_gaa(append_out_aaa(XS1)) → append_out_gaa(cons)
U1_aaa(append_out_aaa(XS1)) → append_out_aaa(cons)
split_in_aag(x0)
U1_gaa(x0)
U2_aag(x0, x1)
append_in_aaa
U1_aaa(x0)
PERM_IN_AA → U3_AA(split_out_aag(cons, nil, cons))
PERM_IN_AA → U3_AA(U2_aag(cons, split_in_aag(cons)))
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ Narrowing
↳ QDP
↳ UsableRulesProof
↳ QDP
↳ QReductionProof
↳ QDP
↳ Narrowing
↳ QDP
↳ NonTerminationProof
U4_AA(XS, append_out_gaa(YS1)) → PERM_IN_AA
PERM_IN_AA → U3_AA(U2_aag(cons, split_in_aag(cons)))
PERM_IN_AA → U3_AA(split_out_aag(cons, nil, cons))
U3_AA(split_out_aag(y0, nil, cons)) → U4_AA(y0, append_out_gaa(nil))
U3_AA(split_out_aag(y0, cons, cons)) → U4_AA(y0, U1_gaa(append_in_aaa))
split_in_aag(XS) → split_out_aag(XS, nil, XS)
split_in_aag(YS2) → U2_aag(YS2, split_in_aag(YS2))
U2_aag(YS2, split_out_aag(XS, YS1, YS2)) → split_out_aag(cons, cons, YS2)
append_in_aaa → append_out_aaa(nil)
append_in_aaa → U1_aaa(append_in_aaa)
U1_gaa(append_out_aaa(XS1)) → append_out_gaa(cons)
U1_aaa(append_out_aaa(XS1)) → append_out_aaa(cons)
split_in_aag(x0)
U1_gaa(x0)
U2_aag(x0, x1)
append_in_aaa
U1_aaa(x0)
U4_AA(XS, append_out_gaa(YS1)) → PERM_IN_AA
PERM_IN_AA → U3_AA(U2_aag(cons, split_in_aag(cons)))
PERM_IN_AA → U3_AA(split_out_aag(cons, nil, cons))
U3_AA(split_out_aag(y0, nil, cons)) → U4_AA(y0, append_out_gaa(nil))
U3_AA(split_out_aag(y0, cons, cons)) → U4_AA(y0, U1_gaa(append_in_aaa))
split_in_aag(XS) → split_out_aag(XS, nil, XS)
split_in_aag(YS2) → U2_aag(YS2, split_in_aag(YS2))
U2_aag(YS2, split_out_aag(XS, YS1, YS2)) → split_out_aag(cons, cons, YS2)
append_in_aaa → append_out_aaa(nil)
append_in_aaa → U1_aaa(append_in_aaa)
U1_gaa(append_out_aaa(XS1)) → append_out_gaa(cons)
U1_aaa(append_out_aaa(XS1)) → append_out_aaa(cons)